2024.7.24 nyquist_plot【control】
一巡伝達関数の周波数特性を複素平面上に描くことにより、閉ループ系の安定性を調べるための手法をナイキスト線図という。controlでは、nyquist_plot() 関数によりナイキスト線図を描くことができ、ナイキストの安定性判別に利用される。
書式:
control.nyquist_plot(data, omega=None, plot=None, label_freq=0, color=None, label=None, return_contour=None, title=None, legend_loc='upper right', ax=None, unit_circle=False, mt_circles=None, ms_circles=None, **kwargs)source
ナイキスト線図はベクトル軌跡および、このの実軸に対する鏡像によって描かれる。
一次遅れ系のナイキスト線図
安定なシステム
安定極$ -1を有するシステムについて詳細を調べよう。
$ G(s) = \frac{1}{s+1}
https://scrapbox.io/files/66b3315c70f925001cddf71b.png
$ (-1,0) を左に見て時計回りに円を描いていることが確認できる。
ゲインを$ K=0.5, 1, 2の順に変更してみる。
code:p1.py
import control as ct
import matplotlib.pyplot as plt
ct.nyquist_plot(ct.tf(1/2,1,1))
ct.nyquist_plot(ct.tf(1,1,1))
ct.nyquist_plot(ct.tf(2,1,1))
plt.show()
https://scrapbox.io/files/66b3350d252fe1001d4b5e0e.png
ゲインの大きさに合わせて、円が大きくなることが確認できる。具体的には、
$ \omega = 0における位置がゲインの値に対応している。
$ \omega \rightarrow \infty のとき、全て原点に収束している。
全て時計回りである。
ゲインを$ 1に固定し、時定数を$ 1/2, 1, 2の順に変化させる。
code:p.py
import control as ct
import matplotlib.pyplot as plt
ct.nyquist_plot(ct.tf(1,1/2,1))
ct.nyquist_plot(ct.tf(1,1,1))
ct.nyquist_plot(ct.tf(1,2,1))
plt.show()
https://scrapbox.io/files/66b337c0012d68001c4c6672.png
全ての場合において同じ軌道が描かれた。おそらく速さが異なるのだろう。
code:p.py
import control as ct
import matplotlib.pyplot as plt
import numpy as np
omega1 = np.logspace(-3, 3, 8)
ct.nyquist_plot(ct.tf(1,0.5,1), omega=omega1)
ct.nyquist_plot(ct.tf(1,1,1), omega=omega1)
ct.nyquist_plot(ct.tf(1,2,1), omega=omega1)
plt.show()
https://scrapbox.io/files/66b33b8027e86e001da04c1c.png
うまく説明がつかないのだが、同じ周波数$ \omegaに対して異なる点がプロットされていることが確認できる。
ゲインと時定数は$ 1に固定し、極を$ 1/2, 1, 2と変化させてみよう。
code:p.py
import control as ct
import matplotlib.pyplot as plt
ct.nyquist_plot(ct.tf(1,1,1/2))
ct.nyquist_plot(ct.tf(1,1,1))
ct.nyquist_plot(ct.tf(1,1,2))
plt.show()
https://scrapbox.io/files/66b33e4672a974001c36cf1c.png
極の値が大きくなるにつれ、円の直径は小さくなるようだ。
その他の特徴については安定な一次遅れ系と共通である。
その理由は簡単であり、例えば次の2つのシステムは等価である。
$ \Sigma_1 : ゲイン$ 1、時定数$ 1、極$ 2
$ \Sigma_2 : ゲイン$ 1/2、時定数$ 1/2、極$ 1
したがって、$ \Sigma_1を極が$ 1のシステムとして解釈したシステム$ \Sigma_2においてはゲインが$ 1/2となり、これは上の結果から円の半径が$ 1/2倍されることを意味している。
確認:
$ G(s) = \frac{1}{s+2} = \frac{1/2}{s/2 + 1}
不安定な場合について
そもそもナイキスト線図は内部安定なシステムを対象としているのであるが、どんな挙動を示すのかを確認してみよう。
$ G(s) = \frac{1}{s-1}の場合
https://scrapbox.io/files/66b33c4ec32b2b001c489709.png
安定な場合に対して、軌跡は逆回転している。
$ (-1,0)点を起点としている。
では、不安定極$ -1をもつシステムのゲインを$ 1/2, 1, 2と変化してみよう。
code:p.py
import control as ct
import matplotlib.pyplot as plt
ct.nyquist_plot(ct.tf(1/2,1,-1))
ct.nyquist_plot(ct.tf(1,1,-1))
ct.nyquist_plot(ct.tf(2,1,-1))
plt.show()
https://scrapbox.io/files/66b33d00226123001d8de12a.png
ゲインの値に応じて、円の半径が広がっている。
$ \omega=0の開始位置がゲインの値に応じて負の方向に移動している。
$ \omega \rightarrow \infty のとき、全て原点に収束している。